package alo.p6.work;

import alo.p6.BinaryTreeNode;

import java.util.LinkedList;
import java.util.Queue;

//二叉树结点个数
public class SizeOfBinaryTree {
    //递归
    int sizeOfBinaryTree(BinaryTreeNode root){
        if (root==null) return 0;
        else return sizeOfBinaryTree(root.getLeft())+1+sizeOfBinaryTree(root.getLeft());
    }

    //非递归，使用层续遍历
    int sizeOfBinaryTree2(BinaryTreeNode root){
        BinaryTreeNode temp;
        Queue<BinaryTreeNode> queue=new LinkedList();
        int count=0;
        if (root==null) return 0;
        queue.offer(root);
        while (!queue.isEmpty()){
            temp=queue.poll();
            count++;
            if (temp.getLeft()!=null) queue.offer(temp.getLeft());
            if (temp.getRight()!=null) queue.offer(temp.getRight());
        }
        return count;
    }
}
